<?php
namespace Common\Model;
//导入核心文件模型
use Hdphp\Model\Model;

/**
 * 分类模型
 */
	class Category extends Model{
//		指定模型操作的表
//		protected $table 固定写法
		protected $table='category';
		
//		自动验证参数
		protected $validate=array(           
			array('cname','required','分类名不能为空',3,3),

		);
		
//		添加数据
		public function store(){
//			如果验证不成功返回的判断
			if(!$this->create()) return FALSE;
//			如果$this->add方法不传入数据，会自动获取$this->data里面的数据写入数据库
//			返回到这个方法里面
			return $this->add();
		}
		
//		获取其他类 不能是它本身和它的子集
		public function getFdata($data,$cid){
//			找当前传入类的子集
			$cids=$this->getSon($data,$cid);
//			p($cids);die;
//			把当前它的cid也压入，因为不能包含它当前
			$cids[]=$cid;
//			var_dump($cids);die;
//			获取全部cid但不包括$cids
			$result=$this->whereNotIn('cid',$cids)->get();
//			var_dump($result);die;
			return Data::tree($result,'cname');
		}
		
//		获得子集的方法
		public function getSon($data,$cid){
//			先定义一个数组
			$temp=array();
//			进行循环获取过来的整个表里的数据
			foreach($data as $v){
//				如果当前传入的cid找到了对应的子集内容
				if($v['pid']==$cid){
//					就把子级压入到这个盒子变量中
					$temp[]=$v['cid'];
//					在进行递归来找子级的子级
					$temp=array_merge($temp,$this->getSon($data,$v['cid']));
				}
			}
//			返回这个获取递归完了的cid字段名
			return $temp;
		}
		
//		编辑方法
		public function edit(){
//			判断自动验证方法
			if(!$this->create()) return FALSE;
//			$this->$data;die;
//			如果$this->add方法不传入数据，会自动获取$this->data里面的数据写入数据库
//			save()方法中如果post条件中包含主键，自动会修改主键对应的条目
			return $this->save();
			
		}
		
//		删除方法
		public function del($cid){
//			获取当前传过来$cid的pid,pluck是获取字段
			$pid=$this->where('cid',$cid)->pluck('pid');
//			获取到pid后把它的所有子级的父级id修改成pid
			$this->where('pid',$cid)->update(array('pid'=>$pid));
//			删除点击的这一条
			return $this->where('cid',$cid)->delete();
		}
	}





























 